/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.javahispano.javacup.tacticas.tacticas_aceptadas.ifox.javacup.tactica;

import java.awt.Color;
import java.util.List;
import org.javahispano.javacup.tacticas.tacticas_aceptadas.ifox.futbol.Equipo;
import org.javahispano.javacup.modelo.Comando;
import org.javahispano.javacup.modelo.EstiloUniforme;
import org.javahispano.javacup.modelo.JugadorDetalle;
import org.javahispano.javacup.modelo.Posicion;
import org.javahispano.javacup.modelo.SituacionPartido;
import org.javahispano.javacup.modelo.Tactica;
import org.javahispano.javacup.modelo.TacticaDetalle;

/**
 *
 * @author Usuario
 */
public class Leti implements Tactica {

    public static Posicion alineacion1[]=new Posicion[]{
        new Posicion(0.2595419847328244,-50.41044776119403),
        new Posicion(-7.37062937062937,-35.15837104072398),
        new Posicion(7.608391608391608,-34.920814479638004),
        new Posicion(28.290076335877863,-28.470149253731343),
        new Posicion(-28.290076335877863,-28.470149253731343),
        new Posicion(14.793893129770993,-18.544776119402986),
        new Posicion(-17.594405594405593,-20.667420814479637),
        new Posicion(-23.618320610687025,-0.7835820895522387),
        new Posicion(2.377622377622378,-8.076923076923077),
        new Posicion(21.3986013986014,-1.900452488687783),
        new Posicion(-1.902097902097902,-0.47511312217194573)
    };

    public static Posicion alineacion2[]=new Posicion[]{
        new Posicion(-0.4755244755244755,-46.08597285067873),
        new Posicion(-7.37062937062937,-23.518099547511312),
        new Posicion(9.510489510489512,-23.993212669683256),
        new Posicion(27.81818181818182,-16.866515837104075),
        new Posicion(-29.244755244755243,-19.004524886877828),
        new Posicion(9.510489510489512,6.889140271493213),
        new Posicion(-10.937062937062937,-3.5633484162895925),
        new Posicion(-21.16083916083916,26.131221719457013),
        new Posicion(0.951048951048951,21.142533936651585),
        new Posicion(14.265734265734267,33.02036199095023),
        new Posicion(-4.041958041958042,34.68325791855204)
    };

    public static Posicion alineacion3[]=new Posicion[]{
        new Posicion(-0.4755244755244755,-46.08597285067873),
        new Posicion(-8.321678321678322,-7.364253393665159),
        new Posicion(5.706293706293707,-8.314479638009049),
        new Posicion(10.937062937062937,27.794117647058822),
        new Posicion(-14.027972027972028,25.893665158371043),
        new Posicion(19.020979020979023,2.3755656108597285),
        new Posicion(-21.874125874125873,-1.1877828054298643),
        new Posicion(-21.16083916083916,36.34615384615385),
        new Posicion(-0.951048951048951,14.490950226244346),
        new Posicion(17.356643356643357,39.19683257918552),
        new Posicion(0.951048951048951,41.334841628959275)
    };

    public static Posicion alineacion4[]=new Posicion[]{
        new Posicion(0.2595419847328244,-50.41044776119403),
        new Posicion(-11.16030534351145,-35.78358208955224),
        new Posicion(12.717557251908397,-35.26119402985075),
        new Posicion(28.290076335877863,-28.470149253731343),
        new Posicion(-28.290076335877863,-28.470149253731343),
        new Posicion(14.793893129770993,-18.544776119402986),
        new Posicion(-17.389312977099234,-19.58955223880597),
        new Posicion(-23.618320610687025,-0.7835820895522387),
        new Posicion(7.37062937062937,-6.889140271493213),
        new Posicion(21.3986013986014,-1.900452488687783),
        new Posicion(-7.846153846153847,-6.651583710407239)
    };

    public static Posicion alineacion5[]=new Posicion[]{
        new Posicion(0.2595419847328244,-50.41044776119403),
        new Posicion(-7.37062937062937,-33.257918552036195),
        new Posicion(8.083916083916083,-31.59502262443439),
        new Posicion(22.11188811188811,-24.468325791855204),
        new Posicion(-23.3006993006993,-25.418552036199095),
        new Posicion(10.461538461538462,-4.513574660633484),
        new Posicion(-1.188811188811189,-14.728506787330318),
        new Posicion(-24.013986013986013,5.463800904977376),
        new Posicion(-11.412587412587413,-0.7126696832579186),
        new Posicion(20.20979020979021,12.59049773755656),
        new Posicion(-4.041958041958042,19.95475113122172)
    };

    public static Posicion alineacion6[]=new Posicion[]{
        new Posicion(0.2595419847328244,-50.41044776119403),
        new Posicion(-0.7132867132867133,-37.29638009049774),
        new Posicion(11.412587412587413,-34.20814479638009),
        new Posicion(24.013986013986013,-28.269230769230766),
        new Posicion(-26.867132867132867,-30.88235294117647),
        new Posicion(6.181818181818182,-18.766968325791854),
        new Posicion(-12.839160839160838,-34.44570135746606),
        new Posicion(-4.9930069930069925,0.7126696832579186),
        new Posicion(-9.986013986013985,-15.91628959276018),
        new Posicion(11.888111888111888,9.97737556561086),
        new Posicion(-1.4265734265734267,23.28054298642534)
    };

    class TacticaDetalleImpl implements TacticaDetalle {

        @Override
        public String getNombre() {
            return "Leti";
        }

        @Override
        public String getPais() {
            return "Colombia";
        }

        @Override
        public String getEntrenador() {
            return "Henrry Vallejo";
        }

        @Override
        public Color getColorCamiseta() {
            return new Color(255, 255, 255);
        }

        @Override
        public Color getColorPantalon() {
            return new Color(255, 102, 0);
        }

        @Override
        public Color getColorFranja() {
            return new Color(255, 102, 0);
        }

        @Override
        public Color getColorCalcetas() {
            return new Color(0, 0, 0);
        }

        @Override
        public Color getColorPortero() {
            return new Color(0, 0, 0);
        }

        @Override
        public EstiloUniforme getEstilo() {
            return EstiloUniforme.FRANJA_VERTICAL;
        }

        @Override
        public Color getColorCamiseta2() {
            return new Color(255, 102, 0);
        }

        @Override
        public Color getColorPantalon2() {
            return new Color(255, 102, 0);
        }

        @Override
        public Color getColorFranja2() {
            return new Color(255, 255, 255);
        }

        @Override
        public Color getColorCalcetas2() {
            return new Color(0, 0, 0);
        }

        @Override
        public Color getColorPortero2() {
            return new Color(0, 0, 0);
        }

        @Override
        public EstiloUniforme getEstilo2() {
            return EstiloUniforme.FRANJA_VERTICAL;
        }

        class JugadorImpl implements JugadorDetalle {

            String nombre;
            int numero;
            Color piel, pelo;
            double velocidad, remate, presicion;
            boolean portero;
            Posicion posicion;

            public JugadorImpl(String nombre, int numero, Color piel, Color pelo,
                    double velocidad, double remate, double presicion, boolean portero) {
                this.nombre = nombre;
                this.numero = numero;
                this.piel = piel;
                this.pelo = pelo;
                this.velocidad = velocidad;
                this.remate = remate;
                this.presicion = presicion;
                this.portero = portero;
            }

            @Override
            public String getNombre() {
                return nombre;
            }

            @Override
            public Color getColorPiel() {
                return piel;
            }

            @Override
            public Color getColorPelo() {
                return pelo;
            }

            @Override
            public int getNumero() {
                return numero;
            }

            @Override
            public boolean esPortero() {
                return portero;
            }

            @Override
            public double getVelocidad() {
                return velocidad;
            }

            @Override
            public double getRemate() {
                return remate;
            }

            @Override
            public double getPresicion() {
                return presicion;
            }
        }

        @Override
        public JugadorDetalle[] getJugadores() {
            return new JugadorDetalle[]{
                        new JugadorImpl("Lago", 10, new Color(70, 55, 27), new Color(50, 0, 0), 0.49d, 1.0d, 0.88d, true),
                        new JugadorImpl("Fabio", 11, new Color(246, 194, 148), new Color(50, 0, 0), 0.9d, 0.85d, 0.9d, false),
                        new JugadorImpl("Damares", 12, new Color(116, 68, 24), new Color(50, 0, 0), 0.76d, 0.81d, 0.78d, false),
                        new JugadorImpl("Paulo", 13, new Color(255, 200, 150), new Color(50, 0, 0), 0.9d, 0.65d, 0.71d, false),
                        new JugadorImpl("Kaik", 14, new Color(255, 200, 150), new Color(33, 27, 27), 0.97d, 0.75d, 0.78d, false),
                        new JugadorImpl("Igor", 15, new Color(255, 200, 150), new Color(50, 0, 0), 0.58d, 0.63d, 0.92d, false),
                        new JugadorImpl("Nathan", 16, new Color(213, 146, 85), new Color(50, 0, 0), 0.69d, 0.73d, 1.0d, false),
                        new JugadorImpl("Vitor", 17, new Color(255, 200, 150), new Color(0, 0, 0), 0.74d, 0.64d, 0.86d, false),
                        new JugadorImpl("Raul", 18, new Color(201, 138, 82), new Color(50, 0, 0), 0.81d, 0.77d, 1.0d, false),
                        new JugadorImpl("Otto", 19, new Color(255, 200, 150), new Color(50, 0, 0), 1.0d, 1.0d, 1.0d, false),
                        new JugadorImpl("Adrian", 20, new Color(255, 200, 150), new Color(0, 0, 0), 1.0d, 1.0d, 1.0d, false)
                    };
        }
    }
    TacticaDetalle detalle = new TacticaDetalleImpl();

    private Equipo leti;

    public Leti() {
        leti = new Equipo();
    }

    @Override
    public TacticaDetalle getDetalle() {
        return detalle;
    }

    @Override
    public Posicion[] getPosicionSaca(SituacionPartido sp) {
        return alineacion1;
    }

    @Override
    public Posicion[] getPosicionRecive(SituacionPartido sp) {
        return alineacion4;
    }

    @Override
    public List<Comando> ejecutar(SituacionPartido sp) {
        leti.setSituacion(sp);
        leti.actualizar();
        return leti.getComandos();
    }
}
